<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>prototype</title>
</head>
<body>
    1．每个函数function都有一个prototype，即显式原型(属性)
    2．每个实例对象都有一个_proto__，可称为隐式原型(属性)
    3．对象的隐式原型的值为其对应构造函数的显式原型的值
    <script>
        //每个函数都有一个prototype属性，它默认指向一个Object空对象(即称为:原型对象)
        console.log(Date.prototype,typeof Date.prototype);
        function Fn(){

        }
        Fn.prototype.test=function(){
            console.log("test()");
        }
        console.log(Fn.prototype);//默认指向一个object空对象
        console.log(Date.prototype.constructor===Date);
        console.log(Fn.prototype.constructor);

        var fn=new Fn()
        //每个实例对象都有一个_proto__，可称为隐式原型(属性)
        console.log(fn.__proto__);
        console.log(Fn.prototype.__proto__);
        //对象的隐式原型的值为其对应构造函数的显式原型的值
        console.log(Fn.prototype===fn.__proto__);
        //原型对象中有一个属性constructor指向函数对象


        //对象A instanceof 函数B，如果A在B的原型链上，返回true
        console.log(fn instanceof Fn);
        console.log(fn instanceof Object);
        
    </script>
</body>
</html>